package com.xs.tool.path;

import lombok.experimental.UtilityClass;

@UtilityClass
public class PathUtil {
    /**
     * 获取项目根路径
     * 支持多种环境下的路径获取
     */
    public static String getProjectRootPath(Class<?> applicationClass) {
        try {
            // 方法1: 通过user.dir系统属性获取(推荐)
            String userDir = System.getProperty("user.dir");
            if (userDir != null && !userDir.isEmpty()) {
                return userDir;
            }

            // 方法2: 通过类加载器获取
            String classPath = applicationClass.getProtectionDomain()
                    .getCodeSource().getLocation().getPath();
            if (classPath.contains("/target/") || classPath.contains("\\target\\")) {
                // 开发环境，返回项目根目录
                return classPath.substring(0, classPath.indexOf("/target/"));
            }

            // 方法3: 通过当前工作目录获取
            return new java.io.File("").getAbsolutePath();

        } catch (Exception e) {
            // 如果所有方法都失败，返回默认相对路径
            return ".";
        }
    }
}
